package javase_class_250902;

/**
 * ClassName: ArrayUtil
 * Package: javase_class_250902
 * Description:自定义操作数组的工具类
 *
 * @Author harkjeans
 * @Create 2025/9/2 18:28
 * @Version 1.0
 */
public class ArrayUtil {

    public static void main(String[] args) {
        ArrayUtil arrayUtil = new ArrayUtil();
        int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
        arrayUtil.sort(arr1, "descend");
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i] + " ");
        }
        System.out.println();

    }



    /**
     *
     * @Description 求int型数组的最大值
     * @param arr
     * @return
     *
     */
    public int max(int[] arr){
        int maxValue = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(maxValue < arr[i]){
                maxValue = arr[i];
            }
        }
        return maxValue;
    }
    /**
     *
     * @Description 求int整型数组的最小值
     * @param arr
     * @return
     *
     */
    public int min(int[] arr){
        int minValue = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(minValue > arr[i]){
                minValue = arr[i];
            }
        }
        return minValue;
    }
    /**
     *
     * @Description 求int型数组的总和
     * @param arr
     * @return
     *
     */
    public int sum(int[] arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }
    /**
     *
     * @Description 求int数组元素的平均值
     * @param arr
     * @return
     *
     */
    public int average(int[] arr){
        int sumValue = sum(arr);
        return sumValue / arr.length;
    }
    /**
     *
     * @Description 遍历数组
     * @param arr
     *
     */
    public void print(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "   ");
        }
        System.out.println();
    }
    /**
     * @Description 复制数组arr
     * @param arr
     * @return
     *
     */
    public int[] copy(int[] arr){
        int[] arr1 = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            arr1[i] = arr[i];
        }
        return arr1;
    }
    /**
     *
     * @Description 反转数组
     * @param arr
     *
     */
    public void reverse(int[] arr){
        for(int i = 0, j = arr.length - 1; i < j; i++, j--){
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    /**
     *
     * @Description 数组排序
     * @param arr
     * @param desc 指明排序方式
     *
     */
    public void sort(int[] arr, String desc){
        if ("ascend".equals(desc)){
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] > arr[j + 1]){
                        swap(arr, j, j + 1);
                    }
                }
            }
        }
        else if ("descend".equals(desc)){
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] < arr[j + 1]){
                        swap(arr, j, j + 1);
                    }
                }
            }
        }
        else{
            System.out.println("输入排序方式有误！");
        }
    }
    private void swap(int[] arr, int i, int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    /**
     *
     * @Description 查找指定value值在arr数组中出现的位置
     * @param arr
     * @param value
     * @return value值出现位置/-1
     *
     */
    public int getValue(int[] arr, int value){
        for (int i = 0; i < arr.length; i++) {
            if (value == arr[i]){
                return i;
            }
        }
        return -1;
    }








}
